function simMatrix = constructSimMatrix(pathways)
    % 初始化基因列表
    allGenes = {};
    
    % 遍历通路，提取所有基因
    for i = 1:length(pathways)
        % 通路中的基因从第三个元素开始
        genes = pathways{i}(3:end);
        allGenes = [allGenes genes];
    end
    
    % 获取唯一的基因列表
    allGenes = unique(allGenes);
    
    % 创建一个基因到索引的映射
    geneToIndex = containers.Map(allGenes, 1:length(allGenes));
    
    % 初始化相似性矩阵
    simMatrix = zeros(length(allGenes));
    
    % 遍历每个通路
    for i = 1:length(pathways)
        % 获取当前通路中的基因
        currentPathway = pathways{i}(3:end);
        
        % 获取当前通路中基因的索引
        indices = cell2mat(values(geneToIndex, currentPathway));
        
        % 更新相似性矩阵
        for j = 1:length(indices)
            for k = 1:length(indices)
                % 假设通路内的基因之间的相似性为1
                simMatrix(indices(j), indices(k)) = 1;
            end
        end
    end
    
    % 返回相似性矩阵
    return
end
